export interface ITeam {
  teamId?: string;
  /**
   * 群类型
   * normal 普通群
   * advanced 高级群
   */
  type?: 'normal' | 'advanced';
  name?: string;
  avatar?: string;
  intro?: string;
  /** 群公告 */
  announcement?: string;
  /**
   * 群加入方式（高级群）
   * 'noVerify' (不需要验证)
   * 'needVerify' (需要验证)
   * 'rejectAll' (禁止任何人加入)
   */
  joinMode?: 'noVerify' | 'needVerify' | 'rejectAll';
  /**
   * 群被邀请模式（高级群）
   * 'needVerify' (需要邀请方同意)
   * 'noVerify' (不需要邀请方同意)
   */
  beInviteMode?: 'needVerify' | 'noVerify';
  /**
   * 群邀请模式（高级群）
   * 'manager' (只有管理员/群主可以邀请他人入群)
   * 'all' (所有人可以邀请他人入群)
   */
  inviteMode?: 'manager' | 'all';
  /**
   * 群信息修改权限（高级群）
   * 'manager' (只有管理员/群主可以修改)
   * 'all' (所有人可以修改)
   */
  updateTeamMode?: 'manager' | 'all';
  /**
   * 群信息自定义字段修改权限（高级群）
   * 'manager' (只有管理员/群主可以修改)
   * 'all' (所有人可以修改)
   */
  updateCustomMode?: 'manager' | 'all';

  /** 群主 */
  owner?: string;
  /** 群人数上限 */
  level?: number;
  /** 群成员数量 */
  memberNum?: number;
  /** 群成员最后更新的时间 */
  memberUpdateTime?: number;
  createTime?: number;
  updateTime?: number;
  /** 开发者扩展字段（JSON） */
  custom?: string;
  /** 第三方服务器扩展字段（JSON） */
  serverCustom?: string;
  /** 是否有效，解散后群无效 */
  valid?: boolean;
  /** 该群是否对当前用户有效, 如果无效, 那么说明被踢了 */
  validToCurrentUser?: boolean;
  /** 是否禁言, 禁言状态下普通成员不能发送消息, 创建者和管理员可以发送消息 */
  mute?: boolean;
  /**
   * 禁言类型
   * none: 都不禁言; normal: 普通成员禁言，即普通成员不能发消息; all: 全体禁言，即所有成员均不能发消息禁言模式
   */
  muteType?: 'none' | 'normal' | 'all';
}

export interface ITeamMember {
  /** 群ID */
  teamId?: string;
  /** 账号 */
  account?: string;
  /** 群成员类型 */
  type?: ITeamMemberType;
}

/**
 * 群成员类型
 * 'normal' (普通成员)
 * 'owner' (群主)
 * 'manager' (管理员)
 */
export type ITeamMemberType = 'normal' | 'owner' | 'manager';

/**
 * 群通知消息的附加消息
 */
export interface IMessageAttach {
  type?: keyof IMessageAttachType;
}

export enum IMessageAttachType {
  updateTeam = '更新群',
  addTeamMembers = '拉人入群',
  removeTeamMembers = '踢人出群',
  acceptTeamInvite = '接受入群邀请',
  passTeamApply = '通过入群申请',
  removeTeamManagers = '添加群管理员',
  addTeamManagers = '移除群管理员',
  leaveTeam = '主动退群',
  dismissTeam = '解散群',
  updateTeamMute = '更新群成员禁言状态',
}
